package com.zmm.zebulon.module.promotion.biz.service.kefu;

import com.zmm.zebulon.module.promotion.biz.dal.dataobject.kefu.KeFuMessageDO;
import com.zmm.zebulon.module.promotion.biz.dal.vo.kefu.message.AppKeFuMessagePageReqVO;
import com.zmm.zebulon.module.promotion.biz.dal.vo.kefu.message.AppKeFuMessageSendReqVO;
import com.zmm.zebulon.module.promotion.biz.dal.vo.kefu.message.KeFuMessageListReqVO;
import com.zmm.zebulon.module.promotion.biz.dal.vo.kefu.message.KeFuMessageSendReqVO;

import javax.validation.Valid;
import java.util.List;

/**
 * description: 客服消息 Service 接口
 *
 * @author zebulon
 * package com.zmm.zebulon.module.promotion.biz.service.kefu
 * name: KeFuMessageService
 * date 2025/8/21 20:42
 */
public interface KeFuMessageService {

    /**
     * 【管理员】发送客服消息
     *
     * @param sendReqVO 信息
     * @return 编号
     */
    Long sendKefuMessage(@Valid KeFuMessageSendReqVO sendReqVO);

    /**
     * 【会员】发送客服消息
     *
     * @param sendReqVO 信息
     * @return 编号
     */
    Long sendKefuMessage(AppKeFuMessageSendReqVO sendReqVO);

    /**
     * 【管理员】更新消息已读状态
     *
     * @param conversationId 会话编号
     * @param userId         用户编号
     * @param userType       用户类型
     */
    void updateKeFuMessageReadStatus(Long conversationId, Long userId, Integer userType);

    /**
     * 获得客服消息分页
     *
     * @param pageReqVO 分页查询
     * @return 客服消息分页
     */
    List<KeFuMessageDO> getKeFuMessageList(KeFuMessageListReqVO pageReqVO);

    /**
     * 【会员】获得客服消息分页
     *
     * @param pageReqVO 请求
     * @param userId    用户编号
     * @return 客服消息分页
     */
    List<KeFuMessageDO> getKeFuMessageList(AppKeFuMessagePageReqVO pageReqVO, Long userId);

}
